//在数组中添加一个元素
var arr = [1, 5, 3, 6, 8, 2, 7];
arr.push(0);
console.log(arr);

//删除数组末尾的最后一个数，
var arr = [8, 9, 1, 3, 6, 4];
arr.pop();
console.log(arr); //返回值为4

//删除数组的第一个元素
var arr = ["A", "B", 8, 4, 6];
arr.shift();
console.log(arr); //返回值为A

//在数组的头部添加
var arr = [0, 3, 8, 6, 5, 4];
arr.unshift(1);
console.log(arr);

//会修改数组当前的位置
var arr = ["D", "C", "B"];
arr.sort();
console.log(arr);

//数组会出现反转
var arr = [4, 2, 3, 1, 5, 7];
arr.reverse();
console.log(arr);

//数组的循环
var arr = [7, 8, 61, 5, 4, 9, 11, 52];

for (var j = 0; j <= arr.length; j++) {
    var Maxmoth;
    var Minmoth;
    for (var i = j + 1; i < arr.length; i++) {
        Maxmoth = arr[i];
        Minmoth = arr[j];

        if (i >= j) {
            Maxmoth > Minmoth;
        } else if (i <= j)
            Minmoth > Maxmoth
    }

}
console.log(Maxmoth);
console.log(Minmoth);

var arr = [6, 9, 28, 18, 36, 1]

arr.soft2Sort = function(fn) {
    /*
          初始想法，指定一个值等于数组的第一个元素，然后从第二个元素开始遍历，如果后面的元素比当前最小值还要小，
          那就让当前最小值等于当前循环时下标所代表的值

      */
    console.log(fn)
    console.log(this)
        // 如果没有传参数，则让它具有一个默认的排序函数
    if (fn === undefined) {
        fn = (a, b) => a > b
    }
    // 外层循环，遍历数组当中的每一个元素
    for (var j = 0; j < this.length; j++) {
        var minItem = this[j]
        var minIndex = j
            // 内层循环，遍历数组从j+1开始的每一个元素，负责找到从j下标开始的最小值或者最大值
        for (var i = j + 1; i < this.length; i++) {
            if (fn(minItem, this[i])) {
                minItem = this[i]
                minIndex = i
            }
        }
        console.log(minItem)
            // 和第j个元素交换找到的最小值或者最大值
        var a = this[j]
        this[j] = this[minIndex]
        this[minIndex] = a
            // 输出循环中数组现在的状态
        console.log(this)
    }
}

arr.sort((a, b) => a - b)

arr.soft2Sort(function(a, b) {
    return a - b
})